package main

import (
	"fmt"
	"sort"
)

type Data struct {
	Id        int `json:"id"`
	FirstSort int `json:"first_sort"`
	SecSort   int `json:"sec_sort"`
}

type List1 []Data

func (p List1) Len() int {
	return len(p)
}

func (p List1) Less(i, j int) bool {
	if p[i].SecSort > p[j].SecSort {
		return false
	}

	if p[i].SecSort < p[j].SecSort {
		return true
	}

	return p[i].FirstSort < p[j].FirstSort
}

func (p List1) Swap(i, j int) {
	p[i], p[j] = p[j], p[i]
}

func (p *List1) Sort() {
	sort.Sort(p)
}

func main() {
	a := List1{{1, 1, 3}, {2, 2, 2000}, {3, 3, 2000}, {4, 4, 2000}, {5, 5, 2}, {6, 6, 4}, {7, 7, 2000}, {8, 8, 2000}}
	//a.Sort()
	//fmt.Println(a)

	sort.SliceStable(a, func(i, j int) bool {
		if a[i].SecSort > a[j].SecSort {
			return false
		}
		if a[i].SecSort < a[j].SecSort {
			return true
		}
		if a[i].FirstSort > a[j].FirstSort {
			return false
		}
		if a[i].FirstSort < a[j].FirstSort {
			return true
		}
		return true
	})

	fmt.Println(a)

	a1 := []A{{"天猫", 10}, {"京东", 10}}
	sort.SliceStable(a1, func(i, j int) bool {
		if a1[i].Price > a1[j].Price {
			return false
		}
		return a1[i].Store > a1[j].Store
	})
	fmt.Println(a1)
}

type A struct {
	Store string `json:"store"`
	Price int    `json:"price"`
}
